This document relates to managing task performance.
Systems for large-scale parallel processing can include performing computer tasks and/or processes on a cluster of computers and/or servers (e.g., task parallelism). Each computer in the cluster can perform part of the task by executing one or more task instances. For example, task instances can be performed in parallel on each server within a cluster of servers and can interact with on the same or different data. There can a large number of tasks and task instances. Each task instance executes the same software program. The cluster can include computers that share a common platform, e.g., computers that use the same type of CPU and have identical or nearly identical memory configurations, and can include computers of various platform types. In some cases, multiple servers within a cluster can be implemented on a single physical device. For example, the servers may be implemented as virtual machines, with multiple virtual machines running on a single computer.
Each computer in a cluster can instantiate multiple task instances associated with one or more tasks. As a computer in the cluster performs the tasks defined by the task instances, the task instances can use a common resource, such as the CPU or memory. Because the task instances share common resources, one task instance can interfere with the performance of other task instances executing on the same computer. For example, one task instance can require or use a greater share of the CPU or memory than other task instances and can cause the other task instances on the computer to have increased task latency or increase the number of CPU cycles needed to complete an instruction.